package liming.ai.tongyi;

import liming.tool.json.ToJson;
import liming.tool.json.annotation.JsonMark;

@JsonMark("tongyi")
public class TongYiConfig implements ToJson {
    @JsonMark
    public Body body;

    @JsonMark("body")
    public static class Body implements ToJson{
        @JsonMark
        public String model;
        @JsonMark
        public Boolean  stream;
        /**
         * 采样温度，控制模型生成文本的多样性。
         *
         * temperature越高，生成的文本更多样，反之，生成的文本更确定。
         */
        @JsonMark
        public Double temperature;
        /**
         * 核采样的概率阈值，控制模型生成文本的多样性。
         *
         * top_p越高，生成的文本更多样。反之，生成的文本更确定。
         *
         * 取值范围：（0,1.0]
         */
        @JsonMark
        public Double top_p;
        /**
         * 控制模型生成文本时的内容重复度。
         *
         * 取值范围：[-2.0, 2.0]。正数会减少重复度，负数会增加重复度。
         *
         * 适用场景：
         */
        @JsonMark
        public Double presence_penalty;

        /**
         * 是否开启思考模式，适用于 Qwen3 模型。
         * Qwen3 商业版模型默认值为 False，Qwen3 开源版模型默认值为 True。
         */
        @JsonMark
        public Boolean enable_thinking;

        /**
         * 模型在生成文本时是否使用互联网搜索结果进行参考。取值如下：
         *
         * true：启用互联网搜索，模型会将搜索结果作为文本生成过程中的参考信息，但模型会基于其内部逻辑判断是否使用互联网搜索结果。
         *
         * 如果模型没有搜索互联网，建议优化Prompt，或设置search_options中的forced_search参数开启强制搜索。
         * false（默认）：关闭互联网搜索。
         *
         * 启用互联网搜索功能可能会增加 Token 的消耗。
         */
        @JsonMark
        public Boolean enable_search;
    }
}
